Activity

Brightcells 6 years ago
parent
commit
ff3a23ccf0

+ 7 - 2
api/encrypt_views.py

@@ -6,9 +6,10 @@ import random
6 6
 
7 7
 from django_logit import logit
8 8
 from django_response import response
9
+from TimeConvert import TimeConvert as tc
9 10
 
10 11
 from logs.models import MchInfoDecryptLogInfo, MchInfoEncryptLogInfo
11
-from mch.models import BrandInfo, ModelInfo
12
+from mch.models import ActivityInfo, BrandInfo, ModelInfo
12 13
 from utils.algorithm.b64 import b64_decrypt, b64_encrypt
13 14
 from utils.algorithm.caesar import caesar_decrypt, caesar_encrypt
14 15
 from utils.algorithm.rsalg import rsa_decrypt, rsa_encrypt
@@ -108,6 +109,9 @@ def decrypt(request):
108 109
         mdli.decrypt_count += 1
109 110
         mdli.save()
110 111
 
112
+    act = ActivityInfo.objects.filter(status=True).order_by('-pk').first()
113
+    has_unexpired_activity = True if act and act.has_unexpired_activity else False
114
+
111 115
     return response(200, data={
112 116
         'plaintext': plaintext,
113 117
         'logo_url': brand.brand_logo_url if brand else '',
@@ -119,5 +123,6 @@ def decrypt(request):
119 123
             'Model': (model.model_full_name or model.model_name) if model else '',
120 124
             'DistributorID': distributor_pk,
121 125
             'SerialNo': sn,
122
-        }
126
+        },
127
+        'has_unexpired_activity': has_unexpired_activity,
123 128
     })

+ 6 - 2
api/mch_views.py

@@ -12,8 +12,8 @@ from pywe_storage import RedisStorage
12 12
 from TimeConvert import TimeConvert as tc
13 13
 
14 14
 from account.models import UserInfo
15
-from mch.models import (AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, LatestAppInfo,
16
-                        LatestAppScreenInfo, ModelInfo, OperatorInfo)
15
+from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo,
16
+                        LatestAppInfo, LatestAppScreenInfo, ModelInfo, OperatorInfo)
17 17
 from statistic.models import ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo
18 18
 from utils.error.errno_utils import (AdministratorStatusCode, OperatorStatusCode, ProductBrandStatusCode,
19 19
                                      ProductModelStatusCode, UserStatusCode)
@@ -274,6 +274,9 @@ def consumer_info_api(request):
274 274
         test_user=False,
275 275
     ).exists()
276 276
 
277
+    act = ActivityInfo.objects.filter(status=True).order_by('-pk').first()
278
+    during_activity = True if act and act.has_unexpired_activity else False
279
+
277 280
     # 记录用户信息提交记录
278 281
     log = ConsumeInfoSubmitLogInfo.objects.create(
279 282
         user_id=user_id,
@@ -293,6 +296,7 @@ def consumer_info_api(request):
293 296
         serialNo=serialNo,
294 297
         verifyResult=verifyResult,
295 298
         dupload=dupload,
299
+        submit_during_activity=during_activity,
296 300
         test_user=user.test_user,
297 301
     )
298 302
 

+ 7 - 2
mch/admin.py

@@ -8,8 +8,8 @@ from django_admin import AdvancedActionsModelAdmin, AdvancedExportExcelModelAdmi
8 8
 from django_models_ext import ProvinceShortModelMixin
9 9
 from pysnippets.strsnippets import strip
10 10
 
11
-from mch.models import (AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, LatestAppInfo,
12
-                        LatestAppScreenInfo, ModelInfo, OperatorInfo, SaleclerkInfo)
11
+from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo,
12
+                        LatestAppInfo, LatestAppScreenInfo, ModelInfo, OperatorInfo, SaleclerkInfo)
13 13
 
14 14
 
15 15
 class AdministratorInfoAdmin(admin.ModelAdmin):
@@ -185,6 +185,10 @@ class ConsumeInfoSubmitLogInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):
185 185
     search_fields = ('user_id', 'phone', 'serialNo')
186 186
 
187 187
 
188
+class ActivityInfoAdmin(admin.ModelAdmin):
189
+    list_display = ('activity_name', 'start_at', 'end_at', 'status', 'created_at', 'updated_at')
190
+
191
+
188 192
 admin.site.register(AdministratorInfo, AdministratorInfoAdmin)
189 193
 admin.site.register(OperatorInfo, OperatorInfoAdmin)
190 194
 admin.site.register(BrandInfo, BrandInfoAdmin)
@@ -196,3 +200,4 @@ admin.site.register(SaleclerkInfo, SaleclerkInfoAdmin)
196 200
 admin.site.register(LatestAppInfo, LatestAppInfoAdmin)
197 201
 admin.site.register(LatestAppScreenInfo, LatestAppScreenInfoAdmin)
198 202
 admin.site.register(ConsumeInfoSubmitLogInfo, ConsumeInfoSubmitLogInfoAdmin)
203
+admin.site.register(ActivityInfo, ActivityInfoAdmin)

+ 36 - 0
mch/migrations/0030_auto_20190301_1402.py

@@ -0,0 +1,36 @@
1
+# -*- coding: utf-8 -*-
2
+# Generated by Django 1.11.20 on 2019-03-01 06:02
3
+from __future__ import unicode_literals
4
+
5
+from django.db import migrations, models
6
+
7
+
8
+class Migration(migrations.Migration):
9
+
10
+    dependencies = [
11
+        ('mch', '0029_auto_20181117_0052'),
12
+    ]
13
+
14
+    operations = [
15
+        migrations.CreateModel(
16
+            name='ActivityInfo',
17
+            fields=[
18
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19
+                ('status', models.BooleanField(db_index=True, default=True, help_text='Status', verbose_name='status')),
20
+                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
21
+                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
22
+                ('activity_name', models.CharField(blank=True, help_text='\u6d3b\u52a8\u540d\u79f0', max_length=255, null=True, verbose_name='activity_name')),
23
+                ('start_at', models.DateTimeField(help_text='start_at', verbose_name='start_at')),
24
+                ('end_at', models.DateTimeField(help_text='end_at', verbose_name='end_at')),
25
+            ],
26
+            options={
27
+                'verbose_name': '\u6d3b\u52a8\u4fe1\u606f',
28
+                'verbose_name_plural': '\u6d3b\u52a8\u4fe1\u606f',
29
+            },
30
+        ),
31
+        migrations.AddField(
32
+            model_name='consumeinfosubmitloginfo',
33
+            name='submit_during_activity',
34
+            field=models.BooleanField(db_index=True, default=False, help_text='\u662f\u5426\u4e3a\u6d3b\u52a8\u671f\u95f4\u4e0a\u4f20', verbose_name='submit_during_activity'),
35
+        ),
36
+    ]

+ 22 - 0
mch/models.py

@@ -6,6 +6,7 @@ from django.utils.translation import ugettext_lazy as _
6 6
 from django_models_ext import (BaseModelMixin, ProvinceShortModelMixin, SexModelMixin, upload_file_path,
7 7
                                upload_file_url, upload_path)
8 8
 from shortuuidfield import ShortUUIDField
9
+from TimeConvert import TimeConvert as tc
9 10
 
10 11
 
11 12
 class AdministratorInfo(BaseModelMixin):
@@ -490,6 +491,8 @@ class ConsumeInfoSubmitLogInfo(BaseModelMixin):
490 491
 
491 492
     dupload = models.BooleanField(_(u'dupload'), default=False, help_text=_(u'是否为重复提交'), db_index=True)
492 493
 
494
+    submit_during_activity = models.BooleanField(_(u'submit_during_activity'), default=False, help_text=_(u'是否为活动期间上传'), db_index=True)
495
+
493 496
     test_user = models.BooleanField(_(u'test_user'), default=False, help_text=_(u'是否为测试用户'), db_index=True)
494 497
 
495 498
     class Meta:
@@ -519,4 +522,23 @@ class ConsumeInfoSubmitLogInfo(BaseModelMixin):
519 522
             'model_info': self.model_info,
520 523
             'serialNo': self.serialNo,
521 524
             'verifyResult': self.verifyResult,
525
+            'submit_during_activity': self.submit_during_activity,
522 526
         }
527
+
528
+
529
+class ActivityInfo(BaseModelMixin):
530
+    activity_name = models.CharField(_(u'activity_name'), max_length=255, blank=True, null=True, help_text=u'活动名称')
531
+
532
+    start_at = models.DateTimeField(_(u'start_at'), help_text=_(u'start_at'))
533
+    end_at = models.DateTimeField(_(u'end_at'), help_text=_(u'end_at'))
534
+
535
+    class Meta:
536
+        verbose_name = _(u'活动信息')
537
+        verbose_name_plural = _(u'活动信息')
538
+
539
+    def __unicode__(self):
540
+        return unicode(self.pk)
541
+
542
+    @property
543
+    def has_unexpired_activity(self):
544
+        return self.start_at <= tc.utc_datetime() < self.end_at

+ 2 - 2
requirements.txt

@@ -9,9 +9,9 @@ isoweek==1.3.3
9 9
 jsonfield==2.0.2
10 10
 mock==2.0.0
11 11
 monetary==1.0.2
12
-pysnippets==1.0.6
12
+pysnippets==1.0.8
13 13
 qiniu==7.2.2
14
-requests==2.20.1
14
+requests==2.21.0
15 15
 rlog==0.3
16 16
 rsa==3.4.2
17 17
 shortuuid==0.5.0

+ 1 - 1
requirements_deploy.txt

@@ -1,3 +1,3 @@
1 1
 ipdb==0.11
2
-ipython==5.6.0
2
+ipython==5.8.0
3 3
 uwsgi==2.0.17

+ 2 - 2
requirements_dj.txt

@@ -1,4 +1,4 @@
1
-Django==1.11.16
1
+Django==1.11.20
2 2
 django-admin==1.3.2
3 3
 django-cors-headers==2.4.0
4 4
 django-curtail-uuid==1.0.4
@@ -6,7 +6,7 @@ django-detect==1.0.8
6 6
 django-file-md5==1.0.2
7 7
 django-file-upload==1.1.0
8 8
 django-ip==1.0.2
9
-django-json-render==1.0.1
9
+django-json-render==1.0.2
10 10
 django-json-response==1.1.5
11 11
 django-logit==1.1.3
12 12
 django-mobi==0.1.7

+ 2 - 2
requirements_redis.txt

@@ -1,3 +1,3 @@
1
-hiredis==0.3.0
1
+hiredis==1.0.0
2 2
 redis==2.10.6
3
-redis-extensions==1.2.4
3
+redis-extensions==1.2.5